#include<stdio.h>
int main()
{
	int a[100][100];
	int mark[100][100]={0};
	int r,c;
	scanf("%d%d",&r,&c);
	int n=r*c;
	int pr=-1,pc=0;
	for(int i=0;i<r;i++)//input
	{
		for(int j=0;j<c;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=0;i<r;i++)//set mark
	{
		mark[i][c]=1;
	}
	for(int i=0;i<c;i++)
	{
		mark[r][i]=1;
	}
	for(int i=0;i<r;i++)//print
	{
		for(int j=0;j<c;j++)
		{
			printf("%d ",a[i][j]);
		}
		putchar('\n');
	}
	for(int i=0;i<n;)//print linerly
	{
		while(mark[pr+1][pc]==0&&i<n)
		{
			pr++;
			printf("%d ",a[pr][pc]);
			mark[pr][pc]=1;
			i++;
		}
		while(mark[pr][pc+1]==0&&i<n)
		{
			pc++;
			printf("%d ",a[pr][pc]);
			mark[pr][pc]=1;
			i++;
		}
		while(mark[pr-1][pc]==0&&pr>0&&i<n)
		{
			pr--;
			printf("%d ",a[pr][pc]);
			mark[pr][pc]=1;
			i++;
		}
		while(mark[pr][pc-1]==0&&i<n)
		{
			pc--;
			printf("%d ",a[pr][pc]);
			mark[pr][pc]=1;
			i++;
		}
	}
	return 0;
}
